package com.example.airmanagement;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.recyclerview.widget.RecyclerView;

import com.example.airmanagement.airs.Air_temperature;

import java.util.List;

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.VH> {
    //    适配器持有数据源
    private List<Air_temperature> mData;

    //    接收外部传入的数据
    public MyAdapter(List<Air_temperature> data) {
        mData = data;
    }

    //    1.创建viewHolder加载单个item，初始化控件
    @Override
    public VH onCreateViewHolder(ViewGroup parent, int viewType) {
        // 加载 item 布局
        View itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.list_item, parent, false);
        return new VH(itemView);
    }

    //    2.绑定数据到ViewHolder
    @Override
    public void onBindViewHolder(VH holder, int position) {
        Air_temperature item = mData.get(position);
        // 设置空调名称
        holder.tvAirName.setText(item.getAirName());
        // 设置温度数值
        holder.tvTempNum.setText(String.valueOf((int) item.getTempNum()) + "℃");
        // 设置温度模式文本
        holder.tvTempMode.setText(item.getTempName());
        // 设置空调品牌图片
        holder.ivAir.setImageResource(item.getImgAir());
        // 设置温度模式图片
        holder.ivTempMode.setImageResource(item.getImgTemp());
    }

    //    3.返回数据项数量
    @Override
    public int getItemCount() {
        return mData != null ? mData.size() : 0;
    }

    //    删除指定位置的数据项
    public void removeItem(int position) {
        if (position >= 0 && position < mData.size()) {
            mData.remove(position);
            notifyItemRemoved(position);
            notifyItemRangeChanged(position, mData.size());
        }
    }

    //    获取指定位置的数据项
    public Air_temperature getItem(int position) {
        if (position >= 0 && position < mData.size()) {
            return mData.get(position);
        }
        return null;
    }

    //    添加新的空调数据项
    public void addItem(Air_temperature air) {
        if (air != null) {
            mData.add(air);
            notifyItemInserted(mData.size() - 1);
            // 滚动到新添加的项
        }
    }

    //    内部类：ViewHolder，用于缓存视图控件
    public static class VH extends RecyclerView.ViewHolder {
        ImageView ivAir;          // 空调品牌图片
        TextView tvAirName;       // 空调名称
        TextView tvTempNum;       // 温度数值
        ImageView ivTempMode;     // 温度模式图片
        TextView tvTempMode;      // 温度模式文本

        public VH(View itemView) {
            super(itemView);
            // 初始化所有视图控件
            ivAir = itemView.findViewById(R.id.iv_air);
            tvAirName = itemView.findViewById(R.id.tv_air_name);
            tvTempNum = itemView.findViewById(R.id.tv_temp_num);
            ivTempMode = itemView.findViewById(R.id.iv_temp_mode);
            tvTempMode = itemView.findViewById(R.id.tv_temp_mode);
        }
    }
}
